package com.sdb.fee.service.impl;

import java.util.Date;
import java.util.List;

import com.sdb.common.utils.SecurityUtils;
import com.sdb.patients.mapper.TdPatientsMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sdb.fee.mapper.TdPayMapper;
import com.sdb.fee.domain.TdPay;
import com.sdb.fee.service.ITdPayService;

/**
 * 缴费信息Service业务层处理
 * 
 * @author yyh
 * @date 2025-02-07
 */
@Service
public class TdPayServiceImpl implements ITdPayService 
{
    @Autowired
    private TdPayMapper tdPayMapper;

    @Autowired
    private TdPatientsMapper tdPatientsMapper;

    /**
     * 查询缴费信息
     * 
     * @param id 缴费信息主键
     * @return 缴费信息
     */
    @Override
    public TdPay selectTdPayById(Long id)
    {
        return tdPayMapper.selectTdPayById(id);
    }

    /**
     * 查询缴费信息列表
     * 
     * @param tdPay 缴费信息
     * @return 缴费信息
     */
    @Override
    public List<TdPay> selectTdPayList(TdPay tdPay)
    {
        return tdPayMapper.selectTdPayList(tdPay);
    }

    /**
     * 新增缴费信息
     * 
     * @param tdPay 缴费信息
     * @return 结果
     */
    @Override
    public int insertTdPay(TdPay tdPay)
    {
        if(tdPay.getQudao().equals("现金支付")){
            tdPatientsMapper.addPay(tdPay);
            tdPay.setStatus("支付成功");
            tdPay.setMoney(tdPay.getMoney() + tdPay.getAddfee());
        }else {
            tdPay.setStatus("支付失败");
            tdPay.setMoney(tdPay.getMoney());
        }
        tdPay.setType("缴费");
        tdPay.setCreatetime(new Date());

//        tdPay.setMoney(tdPay.getMoney() + tdPay.getAddfee());
        tdPayMapper.insertTdPay(tdPay);
        return tdPay.getId();
    }

    /**
     * 退费费信息
     *
     * @param tdPay 缴费信息
     * @return 结果
     */
    @Override
    public int refund(TdPay tdPay)
    {
        tdPatientsMapper.tuiPay(tdPay);
        tdPay.setType("退费");
        tdPay.setCreatetime(new Date());
        tdPay.setMoney(tdPay.getMoney() - tdPay.getTuifee());
        return tdPayMapper.refundPay(tdPay);
    }

    /**
     * 修改缴费信息
     * 
     * @param tdPay 缴费信息
     * @return 结果
     */
    @Override
    public int updateTdPay(TdPay tdPay)
    {
        return tdPayMapper.updateTdPay(tdPay);
    }

    /**
     * 批量删除缴费信息
     * 
     * @param ids 需要删除的缴费信息主键
     * @return 结果
     */
    @Override
    public int deleteTdPayByIds(Long[] ids)
    {
        return tdPayMapper.deleteTdPayByIds(ids);
    }

    /**
     * 删除缴费信息信息
     * 
     * @param id 缴费信息主键
     * @return 结果
     */
    @Override
    public int deleteTdPayById(Long id)
    {
        return tdPayMapper.deleteTdPayById(id);
    }


    @Override
    public List<TdPay> userPay(TdPay tdPay) {
        Long userid = SecurityUtils.getUserId();
        tdPay.setCardId(tdPayMapper.getCardId(userid));
        return tdPayMapper.userPay(tdPay);
    }
}
